package com.ftg.learn.chapter04.isa;

import lombok.Getter;
import lombok.Setter;

/**
 * 狗类
 *
 * @author 布衣
 */
public class Dog extends Animal {

    @Getter
    @Setter
    private String name;



    @Override
    public String toString(){
        return "Dog{" +
                ", age=" + age +
                "}";
    }

    private int age;

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    static {
        System.out.println("son1 要比构造方法先执行");
    }

    static {
        System.out.println("son2 要比构造方法先执行");
    }

    // 只初始化一次,一次性初始化完成，要在实例产生之前完成开启空间 赋值操作
    static int sonInt = 15;

    public Dog(){
        System.out.println("dog 的构造方法");
    }

    public void run(){
        sonInt = 16;
        System.out.println("sss");
    }

    public static void main(String[] args) {

        Dog d = new Dog();

        Animal a = new Dog();
        a.eat();
        // Dog  -> Animal -> 实例化animal -> 实例化dog

        // 栈（每运行一个线程的时候会产生一个压栈操作，存储的为栈桢）  堆(非堆（运行时常量池 -- 。。）|堆)   元空间[类的信息 静态 ]   程序计数器   本地方法栈

        // main 运行以后，会把所在的类的信息加载元空间里【java原带的类也要加载  dog animal】 ，栈桢里面创建一个本地变量  ,堆里开启一个空间，然后镜像元空间厘面的dog类,然后初始化操作
    }

}
